package com.hospital.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hospital.entity.Medicine;

import java.util.List;
import java.util.Map;

/**
 * 药品服务接口
 *
 * @author Hospital Management System
 */
public interface MedicineService extends IService<Medicine> {

    /**
     * 获取药品列表
     */
    List<Medicine> getMedicines(String keyword);

    /**
     * 分页获取药品列表
     */
    Map<String, Object> getMedicinesWithPagination(String keyword, Integer category, 
                                                   String ids, Integer page, Integer size);

    /**
     * 按分类获取药品列表
     */
    List<Medicine> getMedicinesByCategory(Integer category);

    /**
     * 获取库存不足的药品
     */
    List<Medicine> getLowStockMedicines();

    /**
     * 获取即将过期的药品
     */
    List<Medicine> getNearExpiryMedicines();

    /**
     * 获取已过期的药品
     */
    List<Medicine> getExpiredMedicines();

    /**
     * 增加药品库存（入库）
     */
    boolean addStock(Long medicineId, Integer quantity, String remark);

    /**
     * 减少药品库存（出库）
     */
    boolean reduceStock(Long medicineId, Integer quantity, String remark);

    /**
     * 获取药品库存统计
     */
    Map<String, Object> getMedicineStatistics();

    /**
     * 检查药品库存预警
     */
    Map<String, Object> checkStockWarning();

    /**
     * 更新药品状态
     */
    void updateMedicineStatus(Long medicineId, Integer status);

    /**
     * 批量更新过期药品状态
     */
    void updateExpiredMedicineStatus();

    /**
     * 检查库存不足的药品
     */
    List<Map<String, Object>> checkLowStock();
} 